# Author:Xiao yang
# 时间：1014-week07

# 目标：“Don't panic！”==>"an tap"

### 书本p83有 “Don't panic！”==>"an tap" 的详细介绍

# 方法一:使用list的方法完成
phrase = "Don't panic!"
plist = list(phrase)  # list() 可以将str  to (转)   list
print(phrase)
print(plist)
# print("Don't panic"[1:3])

# 1.删除后面四个元素  n i c
for i in range(4):
    plist.pop()
print(plist)

# 2.删除 D '
plist.remove('D')
print(plist)
plist.pop(2)
print(plist)

# 3.数学案例: 计算 （(a+b)+(c+d)）
plist.extend([plist.pop(),plist.pop()])
# ['o', 'n', 't', ' '] + [第一个pop a,第二个pop p]
print(plist)

# 4.数据插入 实现：‘t’和 ‘ ’ 的位置转换
# plist.insert(2,plist.pop(3))
# print(plist)
# plist.pop(3)  # 1.代表删除的内容的值 2.删除了plist的这个值
# print(plist.pop(3))
plist.insert(3,plist.pop(2)) # 先算的是plist.pop()括号里面的数字 <== 即删掉了't',然后在运算insert（3，plist.pop()运行后的结果）
print(plist)

# 5. list to str
new_phrase = '_'.join(plist)  #.join 字符串的合并
print(plist)
print(new_phrase)



### 思考：plist 改变了原先的状态么？ 列表的方法会改变列表本身，如果不想打破或者想保留原先数据的内容，请先用copy（）

print()
#zhichao老师完整的案例：

# P67  "Don't panic!" => list => "on tap"
phrase = "Don't panic!"
plist = list(phrase)  # str 转换 list 使用的方法是 list(str)
print(phrase)
print(plist)

for i in range(4):
    # 循环执行4次 删除末位 使用方法 pop()
    plist.pop()
print(plist)
plist.pop(0)
print(plist)
plist.remove("'")
print(plist)
# extend ==> plist + ["a","p"]
plist.extend([plist.pop(),plist.pop()]) # 运算顺序，（1*（5+1））
#['o','n','t',' ']   a           p
print(plist)

plist.insert(2,plist.pop(3))
#                   ' '
print(plist)
new_phrase = ''.join(plist) #? ''.join() list 转换 str
print("plist=",plist) # list的方法会打乱和改变list的内容
print("new_phrase=",new_phrase)

# 总结：这个方法实则改变了列表。它的方法是将一个字符串转换为另一个字符串，具有破坏性。